  let cmd= require('./cmd')
  let page={}//微信付款页面
  let postOrderUrl="http://192.168.1.194:8080/orders"//后台提交订单信息路径
  let postPayUrl="http://192.168.1.194:8080/orders/pay"//后台提交支付信息路径 {id}/{status}
  let order={
    id:0
    ,payId:"等待支付"//支付ID
    ,openId:"等待支付"
    ,deviceId:0//设备ID
    ,payCount:30//购买时长(分钟) 
    ,desc:"吸氧服务 +page.data.tm+分钟"//订单描述
    ,surplusCount:30//剩余服务时间
    ,payFee:200//支付金额(分)整数
    ,payStatus:0//支付状态 0 待支付  1 支付成功 2 支付失败
    ,status:1//失败状态 1 正常  2 用户取消  3 支付密码错误 4 余额不足
  }
  //向商户后台提交订单
  function postOrder(pg) {
    page=pg;
    //向后台提交订单
    //order.id=""
    order.deviceId=page.data.devId//设备ID
    order.payCount=page.data.tm//购买时长(分钟) 
    order.surplusCount=order.payCount//剩余服务时间
    order.desc="吸氧服务 "+ page.data.time//订单描述
    order.payFee=page.data.totalFee//支付金额(分)整数
    order.payStatus=0//支付状态 0 待支付  1 支付成功 2 支付失败
    order.status=1//失败状态 1 正常  2 用户取消  3 支付密码错误 4 余额不足
    wx.request({
      url:postOrderUrl, 
      //header: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' },
      header: {'content-type': 'application/json'},
      data: order,
       method: 'post',
       success: function (res) {
          //console.log(res)
          if (res.statusCode==200){
            console.log("商户提交订单成功")
            order=res.data.obj
            submitOrder()
         }else{
            console.log("商户提交订单失败"+res.statusCode)
         }
       },
       fail:function (res) {
        console.log("商户提交订单失败")
        console.log(res)
     }
    })

  }
  //提交订单
  function submitOrder() {
    wx.cloud.init()
    let that = page;
    //let id = Date.now();

    wx.cloud.callFunction({
      name: "py",
      data: {
        command: "pay",
        out_trade_no: order.id,//订单号
        body:order.desc,
        total_fee: order.payFee,//总金额
      },
      success(res) {
        console.log("支付订单成功：", res.result)
        order.openId=res.result.openid//设置openid
        pay(res.result)
      },
      fail(res) {
        console.log("支付订单失败：", res)
      }
    })
  }
  //实现小程序支付
  function pay(payData) {
    let that = this;
    //console.log(payData) 
    //官方标准的支付方法
    wx.requestPayment({ //已经得到了5个参数
      timeStamp: payData.timeStamp,
      nonceStr: payData.nonceStr,
      package: payData.package, //统一下单接口返回的 prepay_id 格式如：prepay_id=***
      signType: 'MD5',
      paySign: payData.paySign, //签名
      success(res) {
        console.log("支付成功：",res)
        //order.payId=res.//设置支付ID
        cmd.startServer(order.surplusCount, false)//通知设备开始服务
        order.payStatus=1
        //支付状态更新
        payOK()
       
      },
      fail(res) {
        console.error("支付失败：", res)
        order.payStatus=2
        payOK()
      },
      complete(res) {
        console.log("支付完成：")
      }
    })
  }
  //向商家服务器发送支付成功信息
  function payOK(){
    order.status=1//失败状态 1 正常  2 用户取消  3 支付密码错误 4 余额不足
    wx.request({
      url:postPayUrl, //+order.payStatus+"/"+order.id+"/"
      //header: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' },
      header: {'content-type': 'application/json'},
      data: order,
      method: 'post',
       success: function (res) {
        if (res.statusCode==200){
          console.log("商户确认订单成功")
        }else{
          console.error("商户确认订单失败：", res)
        }
          //order=res.obj
          //submitOrder()
       },
       fail(res) {
        console.error("商户确认订单失败：", res)
      }
   })

  }
  /*function payOK(isSucc, tou_id) {
    wx.cloud.callFunction({  //巧妙利用小程序支付成功后的回调，再次调用云函数，通知其支付成功，以便进行订单状态变更
      name: "py",
      data: {
        command: "payOK",
        out_trade_no: tou_id,
        isSuc: isSucc
      },
      success(res) {
        console.log("提交支付失败信息到后台成功", res.result)
      },
      fail(res) {
        console.error("提交支付失败信息到后台失败：", res.result)
      }

    })
  }*/
  //退款
  function refund() {
    let that = this;
    wx.cloud.callFunction({
      name: "py",
      data: {
        command: "refund",
        out_trade_no: "test0005",
        body: 'a7r2相机租赁',
        total_fee: 1,
        refund_fee: 1,
        refund_desc: '押金退款'
      },
      success(res) {
        console.log("云函数payment提交成功：", res)
      },
      fail(res) {
        console.log("云函数payment提交失败：", res)
      }
    })
  }
  module.exports = {
    postOrder: postOrder
  };